#include <stdbool.h>
#include "synchr.h"
typedef struct{
    void **elements; //array containing the elements of the queue
    int readP; //read pointer
    int writeP; //write pointer
    int size; //size of the queue

    lock_variable_t lv; //locking variable associated to the queue
    cond_variable_t cond; //condition variable for blocking procedures
}queue_t;

void enqueue(queue_t *q, void *elem);

void *dequeue(queue_t *q);

queue_t *createQueue(int initialSize);

inline bool isFull(queue_t *q);

inline bool isEmpty(queue_t *q);
